#!/bin/bash
# 本地同一目录下存在多个Git仓库，执行此脚本，可批量同步目录下乃至子目录下的全部Git仓库的全部分支
function git_pull() {
	cd $1
	if [ -d $1/.git ]; then
		# 检测到.git目录
		# 识别为git仓库
		# fetch拉取全量分支，并逐一执行pull拉取最新代码
		# 不会再递归处理git仓库下的目录
		git fetch
		result=`git branch -a | awk '{print substr($1, 16)}' | grep -wv HEAD`
		for branch in $result; do
			git checkout $branch
			git pull
		done
	else
		# 未检测到.git目录
		# 递归处理每一个目录
		for file in `ls`; do
			if [ -d $1/$file ]; then
				git_pull "$1/${file}"
			fi
		done
	fi
}

if [ $# == 0 ]; then
	# 从当前目录开始处理
	git_pull `pwd`
else
	# 多个传参视为多个目录
	for i in "$@"; do
		git_pull $i
	done
fi
